| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { defineEventHandler, EventHandlerRequest } from 'h3';
- import { DB } from '~~/server/db/DB';
- import { createErrorResponse, createSuccessResponse, IResponse } from '~~/server/utils/response';
- export interface IChannel {
- id: number;
- model_id: number;
- parent_id: number;
- name: string;
- type: 'list'|'link',
- url: string;
- outlink: string;
- diyname: string;
- }
- export default defineEventHandler<EventHandlerRequest, Promise<IResponse<IChannel & {
- childs: IChannel[];
- parents: IChannel[];
- }>>>(async (event) => {
- try {
- const id = event.context.params?.id;
- const query = getQuery(event);
- const onlyNavVisible = query.onlyNavVisible === 'true';
- if (!id)
- return createErrorResponse('分类ID不能为空');
-
- const category = await DB.table('pr_cms_channel')
- .where('id', id)
- .where('status', 'normal')
- .first();
- if (!category)
- return createErrorResponse('分类不存在');
- const query2 = DB.table('pr_cms_channel')
- .where('status', 'normal')
- .where('parent_id', id)
- .orderBy('weigh', 'desc')
- .orderBy('id', 'desc');
- if (onlyNavVisible)
- query2.where('isnav', 1);
- const childs = await query2.get();
- const parents : IChannel[] = [];
- let parentId = category.parent_id;
- while (parentId) {
- const parent = await DB.table('pr_cms_channel')
- .where('id', parentId)
- .where('status', 'normal')
- .first();
- if (!parent)
- break;
- parents.push(parent);
- parentId = parent.parent_id;
- }
- category.parents = parents;
- category.childs = childs;
- return createSuccessResponse(category);
- } catch (error) {
- return createErrorResponse(error);
- }
- });
|